package com.xhtt.modules.task.entity;

import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.xhtt.modules.task.model.ship.WorkUserModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Collections;
import java.util.List;

/**
 * <p>
 * 罐任务-任务分配计划
 * </p>
 *
 * @author feipc
 * @since 2019-03-05
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class TaskPotTask extends SuperTask {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    private Integer potPlanId;

    @TableField(exist = false)
    private String serialNo;//主任务流水号

    @TableField(exist = false)
    private String mainTaskName;//主任务名称

    /**
     * 任务名称
     */
    private String name;

    /**
     * 4进行中9完成(跟主任务同步)
     */
    private Integer status;

    /**
     * 1软管连接2 阀门检查启泵作业 3 后续作业 99 其他
     */
    private Integer type;

    /**
     * 协助人员
     */
    private String userAssist;

    @TableField(exist = false)
    private List<WorkUserModel> userAssistModel;

    /**
     * 确认人1确认状态
     */
    private Integer confirm1Status;

    private String confirm1Reason;

    /**
     * 确认人2确认状态
     */
    private Integer confirm2Status;

    private String confirm2Reason;

    /**
     * 任务开始时间
     */
    private LocalDateTime taskStartDate;

    /**
     * 任务结束时间
     */
    private LocalDateTime taskEndDate;


    /**
     * 任务要求
     */
    private String taskRequire;


    /**
     * 是否拍照
     */
    private Integer ifPhoto;

    /**
     * 是否要确认
     */
    private Integer ifConfirm;


    private String taskFre;

    /**
     * 原因说明
     */
    private String reason;

    /**
     * 照片
     */
    private String photo;

    /**
     * 备注
     */
    private String memo;

    private Integer ccrTotal;

    private Integer ccrDone;

    /**
     * 现场操作json
     */
    private String operDetail;

    private LocalDateTime pubTime;//分配时间

    private LocalDateTime startTime;//开始时间

    /**
     * 完工时间
     */
    private LocalDateTime finishTime;

    private Integer msgStartFlag;//开始任务超时报警

    private Integer msgFlag;//超时报警是否发送0 没有 1发送了 发送了就不用再发了

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 最后一次调整时间
     */
    @TableField(update = "now()")
    private LocalDateTime updateTime;

    /**
     * 创建者ID，人工系统创建为0
     */
    private Integer createUserId;

    /**
     * 最后一次调整者ID
     */
    private Integer updateUserId;

    @TableField(exist = false)
    private List<TaskPotTaskStep> taskStepList;

    public List<WorkUserModel> getUserAssistModel() {
        if (CollectionUtils.isNotEmpty(userAssistModel)) {
            return userAssistModel;
        }
        if (StringUtils.isNotEmpty(userAssist)) {
            return JSON.parseArray(userAssist, WorkUserModel.class);
        } else {
            return Collections.EMPTY_LIST;
        }
    }
}
